Тут вже є відповіді на це питання: Express js - неможливо перенаправити (4 відповіді) Закрито 7 років тому. Я використовую паспорти JS з проміжним програмним забезпеченням нижче Передбачається перевірити, чи є користувач логіном, коли він запитує певні речі. Якщо він не ввійшов, його слід перенаправити на сторінку входу. У мене є маршрут запиту наступним чином: app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update); Цей маршрут буде викликаний, коли користувач спробує оновити на веб-сайті ресурс Fantasy Team auth.requiresLogin - це проміжне програмне забезпечення наступним чином: export.requiresLogin = function (req, res, next) { if (req.isAuthenticated ()) { повернути наступним () } повернути res.redirect ("/ signin"); }; Увійшовши до свого користувача, я змоделював закінчення терміну дії сесії, видаливши файл cookie сеансу. Після цього через веб-сайт я зробив запит PUT '/ fantasyteams / 123' щодо оновлення команди фентезі № 123. fantasyteams.update - це просто операція збереження mongodb / mongoose: export.update = function (req, res) { var fantasyteam = req.fantasyteam; fantasyteam = _.extend (fantasyteam, req.body); fantasyteam.save (function (err) { res.jsonp (fantasyteam); }); }; Як і очікувалось, обробник маршруту (app.put ...) вище перехопив запит, передайте його проміжному програмному забезпеченню auth.requiresLogin, щоб перевірити, чи ввійшов користувач. Таким чином, виявляється, що користувач не ввійшов у систему, оскільки я видалив його сесійне печиво. res.redirect викликається, як очікувалося. Однак веб-сайт не переспрямовує на сторінку входу. Я бачу це в журналах команд node.js: ВСТУП / підпис 404 328мс Що я зробив неправильно?
2021-02-25 08:21:41
Схоже, проблема в тому, що у вас немає обробника маршруту для PUT / входу. Початковий запит був путом, тому, коли він переспрямовує, він все ще є частиною того самого запиту на пут із браузера. Просто додайте обробник для put / post / whatever з app.all ('/ signin') 3 | Не відповідь, яку ви шукаєте? Перегляньте інші запитання, позначені тегами файлів cookie сеансу node.js, що виражають паспорт.js або задайте власне запитання.